Adapt to new popover lifecycle
authorMatthias Clasen <mclasen@redhat.com>
Fri, 22 Mar 2019 02:12:22 +0000 (22:12 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 28 May 2019 20:25:13 +0000 (20:25 +0000)
We need to unparent popovers in dispose.

gtk/gtkentry.c
gtk/gtkplacesview.c
gtk/gtkscalebutton.c
gtk/gtktext.c

index 302a908e9cf01f95ae0adbe96321f8e20c2158a0..193f2a9a29e2726a4526dd9fa4c85f9707bef39c 100644 (file)
@@ -160,6 +160,7 @@ struct _GtkEntryPrivate
 
   GtkWidget     *text;
   GtkWidget     *progress_widget;
+  GtkWidget     *emoji_chooser;
 
   guint         show_emoji_icon         : 1;
   guint         editing_canceled        : 1; /* Only used by GtkCellRendererText */
@@ -1293,6 +1294,8 @@ gtk_entry_dispose (GObject *object)
     }
   g_clear_pointer (&priv->text, gtk_widget_unparent);
 
+  g_clear_pointer (&priv->emoji_chooser, gtk_widget_unparent);
+
   gtk_entry_set_icon_from_paintable (entry, GTK_ENTRY_ICON_PRIMARY, NULL);
   gtk_entry_set_icon_tooltip_markup (entry, GTK_ENTRY_ICON_PRIMARY, NULL);
   gtk_entry_set_icon_from_paintable (entry, GTK_ENTRY_ICON_SECONDARY, NULL);
index dabb48604647277552b75966eb1c26f327c3386e..abfcb1278f9d5382d7076a994f0d8ba42c01508f 100644 (file)
@@ -398,6 +398,8 @@ gtk_places_view_destroy (GtkWidget *widget)
   g_cancellable_cancel (priv->cancellable);
   g_cancellable_cancel (priv->networks_fetching_cancellable);
 
+  g_clear_pointer (&priv->server_adresses_popover, gtk_widget_unparent);
+
   GTK_WIDGET_CLASS (gtk_places_view_parent_class)->destroy (widget);
 }
 
index 61a0ed011b0df4a8549a9bced525bebabad4bfdb..7e76ea9fdddd3494ae826bc02f9adc3aefcc89ce 100644 (file)
@@ -491,11 +491,7 @@ gtk_scale_button_dispose (GObject *object)
   GtkScaleButton *button = GTK_SCALE_BUTTON (object);
   GtkScaleButtonPrivate *priv = gtk_scale_button_get_instance_private (button);
 
-  if (priv->dock)
-    {
-      gtk_widget_destroy (priv->dock);
-      priv->dock = NULL;
-    }
+  g_clear_pointer (&priv->dock, gtk_widget_unparent);
 
   if (priv->click_id != 0)
     {
index 49e127156878e656ce73f7b422af13ce9bfd4bd9..fc908c358a01323795393bce2892c13eb31e0dec 100644 (file)
@@ -156,6 +156,7 @@ struct _GtkTextPrivate
 
   char         *im_module;
 
+  GtkWidget     *emoji_completion;
   GtkTextHandle *text_handle;
   GtkWidget     *selection_bubble;
   guint          selection_bubble_timeout_id;
@@ -1785,8 +1786,11 @@ gtk_text_dispose (GObject *object)
       priv->buffer = NULL;
     }
 
+  g_clear_pointer (&priv->emoji_completion, gtk_widget_unparent);
+
   keymap = gdk_display_get_keymap (gtk_widget_get_display (GTK_WIDGET (object)));
   g_signal_handlers_disconnect_by_func (keymap, keymap_direction_changed, self);
+
   G_OBJECT_CLASS (gtk_text_parent_class)->dispose (object);
 }
 
@@ -6652,10 +6656,9 @@ set_enable_emoji_completion (GtkText  *self,
   priv->enable_emoji_completion = value;
 
   if (priv->enable_emoji_completion)
-    g_object_set_data (G_OBJECT (self), "emoji-completion-popup",
-                       gtk_emoji_completion_new (self));
+    priv->emoji_completion = gtk_emoji_completion_new (self);
   else
-    g_object_set_data (G_OBJECT (self), "emoji-completion-popup", NULL);
+    g_clear_pointer (&priv->emoji_completion, gtk_widget_unparent);
 
   g_object_notify_by_pspec (G_OBJECT (self), text_props[PROP_ENABLE_EMOJI_COMPLETION]);
 }